[python] 關於 numpy 以及1~5維度的資料


Posted by mike-hsieh on 2024-01-15

如題,由於在機器學習中,必定會遇到資料,例如:
x_train = array([[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
...,
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.]], dtype=float32)


那個透過 numpy,可以得到 x_train.shape = (50000, 784) ,究竟 numpy, x_train 是什麼呢? 如何知道資料類型? 有哪些屬性? 有哪些方法?


x_train 數據和其形狀 (50000, 784),這說明它是一個 NumPy 數組,通常用於深度學習和機器學習中的數據集表示。以下是對 x_train 的分析:

● x_train 是什麼?

  1. 類型:x_train 是一個 NumPy 數組(numpy.ndarray)。
  2. 數據形狀:它的形狀為 (50000, 784),這意味著這個數組有 50000 行和 784 列。在機器學習中,每一行(row)通常代表一個樣本,每一列(column)代表一個特徵。


● 其中的數據代表什麼?

  • 根據形狀,這個數組可能用於表示圖像數據集,其中每行(row)代表一個扁平化的圖像。例如,在手寫數字識別問題(如 MNIST 數據集)中,每個 28x28 像素的圖像被扁平化為一個長度為 784 的一維數組。
  • 數據類型為 float32,這是深度學習中常用的數據類型,用於減少內存消耗並提高計算效率。


● NumPy 數組的主要屬性:

  1. ndarray.shape:數組的各維度大小。
  2. ndarray.size:數組中元素的總數。
  3. ndarray.dtype:數組元素的數據類型。
  4. ndarray.ndim:數組的維數。


● NumPy 數組的常用方法:

  1. reshape:改變數組的形狀。
  2. flatten 或 ravel:將多維數組降為一維。
  3. transpose:轉置數組。
  4. sum、mean、std 等:計算統計量。
  5. max、min:尋找最大值和最小值。
import numpy as np

# 假設 x_train 是一個 numpy 數組
x_train = np.array(x_train)  # 使用您提供的數據

# 獲取數組的形狀
shape = x_train.shape  # 結果將是 (50000, 784)

# 扁平化第一個圖像
flattened_image = x_train[0].flatten()

# 計算所有樣本的平均值
mean_val = x_train.mean()


● NumPy 中1~5維度的資料:

import numpy as np

# 創建一個一維數組
array_1d = np.array([1, 2, 3, 4, 5])
# 查看形狀
print(array_1d.shape)  # 輸出: (5,)


# 創建一個二維數組(矩陣)
array_2d = np.array([[1, 2], [3, 4], [5, 6]])
# 查看形狀
print(array_2d.shape)  # 輸出: (3, 2)


# 創建一個三維數組
array_3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
# 查看形狀
print(array_3d.shape)  # 輸出: (2, 2, 2)


# 創建一個四維數組
array_4d = np.array([[[[1], [2]], [[3], [4]]], [[[5], [6]], [[7], [8]]]])
# 查看形狀
print(array_4d.shape)  # 輸出: (2, 2, 2, 1)


# 創建一個五維數組
array_5d = np.array([[[[[1], [2]], [[3], [4]]], [[[5], [6]], [[7], [8]]]], 
                     [[[[9], [10]], [[11], [12]]], [[[13], [14]], [[15], [16]]]]])
# 查看形狀
print(array_5d.shape)  # 輸出: (2, 2, 2, 2, 1)


# 在這些示例中,每增加一個維度,數組的結構就變得更加複雜。shape 屬性清晰地顯示了每個維度上的元素數量,這對於理解數據結構和進行數據操作非常重要。

#Numpy #multi-dimensional







Related Posts

2048 專案

2048 專案

C++ 教學(二) 輸入輸出&基本資料型態

C++ 教學(二) 輸入輸出&基本資料型態

Web開發學習筆記20 — Express、EJS

Web開發學習筆記20 — Express、EJS


Comments